-- *****************************************************************************
-- *                                                    *     _       _        *
-- *  AdaDecoupe                                        *    / \   __| | __ _  *
-- *  http://code.google.com/p/adadecoupe/              *   / _ \ / _` |/ _` | *
-- *  Radim Badsi & Célia Biguzzi - IG3                 *  / ___ \ (_| | (_| | *
-- *  Polytech'Montpellier                              * /_/   \_\__,_|\__,_| *
-- *                                                    *                      *
-- *****************************************************************************
-- *                                                                           *
-- * liste_categories.ads  -  Liste_Categories                                 *
-- * Liste de catégories de plaques de verre                                   *
-- *                                                                           *
-- *****************************************************************************

with Util; use Util;
with Categories; use Categories;

package Liste_Categories is

	type T_Liste_Categories is private;
    function Get_Categorie (C: Categorie_Verre) return Ptr_Categorie;

    procedure Init;
	-- Initialise a Null tous les champs de Liste_Cat
   
    procedure Ajouter (Cat : in Ptr_Categorie);
	-- Cree une nouvelle categorie de plaques
    
    function Appartient (C : Categorie_Verre) return Boolean;
    function Appartient (C : Ptr_Categorie) return Boolean;
	-- Retourne vrai si la categorie de nom C existe dans la liste de categories Liste_Cat,
    -- faux sinon.
    
private
    -- Le type T_Liste_Categories simule une table de hachage ou la cle est une lettre majuscule
    -- (categorie du verre) et la valeur un acces vers l'enregistrement correspondant.
    type T_Liste_Categories is array (Character'('A')..Character'('Z')) of Ptr_Categorie;

	Liste_Cat : T_Liste_Categories;
end Liste_Categories;
